home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / Abalone 1.4.2 / src / Settings.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-09-21  |  3.1 KB  |  196 lines  |  [TEXT/MPS ]

  1. #define SETTINGS_C
  2. #include "Settings.h"
  3.  
  4. #include "Abalone.h"
  5.  
  6.  
  7. #if defined(__MWERKS__)
  8. #pragma segment __%Main
  9. #else
  10. #pragma segment Main
  11. #endif
  12.  
  13.  
  14. Settings    gSet =
  15. {
  16. //    The settings must be initialised properly,
  17. //    in case no valid preferences file is present.
  18.     
  19.     /* Version */            kSettingsVersion,
  20.     /* Players */            2,
  21.     /* FieldWidth */        54,
  22.     /* FieldHeight */        47,
  23.     /* SoundOn */            true,
  24.     /* Balls3D */            true,
  25.     /* BackgroundPictID */    200,
  26.     /* ShowNotation */        false,
  27.  
  28.     /* PlayerKind[] */        {    humanPlayer,                /* unused */
  29.                                 humanPlayer,
  30.                                 macPlayer,
  31.                                 macPlayer
  32.                             },    
  33.  
  34.     /* Strategy[] */        {    firstStrategy,                /* unused */
  35.                                 firstStrategy,
  36.                                 fourthStrategy,
  37.                                 firstStrategy
  38.                             },    
  39.     /* Level[] */            {    0,                             /* unused */
  40.                                 0,
  41.                                 2,
  42.                                 0
  43.                             },
  44.     /* Connected[] */        {    false,                        /* unused */
  45.                                 false,
  46.                                 false,
  47.                                 false
  48.                             },
  49.     /* PlayerName[] */        {    "\pBoard",                     /* unused */
  50.                                 "\pBlack",
  51.                                 "\pWhite",
  52.                                 "\pRed"
  53.                             },
  54.     /* Color[] */            {    { 0xA000, 0xC000, 0xC000 },    /* background */
  55.                                 { 0x1000, 0x0000, 0x1000 },
  56.                                 { 0xF000, 0xFFFF, 0xFFFF },
  57.                                 { 0xFFFF, 0x1000, 0x1000 }
  58.                             }
  59. };
  60.  
  61.  
  62.  
  63. void
  64. SetPlayerName (SettingsPtr settings, short player, StringPtr name)
  65. {
  66.     pstrncpy (settings->PlayerName[player], (char *) name, 32);
  67. }
  68.  
  69.  
  70.  
  71. StringPtr
  72. GetPlayerName (SettingsPtr settings, short player)
  73. {    
  74.     return (StringPtr) settings->PlayerName[player];
  75. }
  76.  
  77.  
  78.  
  79. Boolean
  80. ConfirmPlayerKind (short player, short type)
  81. {
  82.     if    (    GetPlayerKind (& gSet, player) == networkPlayer
  83.         &&    IsConnected (player)
  84.         &&    type != networkPlayer
  85.         )
  86.     {
  87.         CurrentCursor (arrowCursor);
  88.         switch (Alert (402, nil))
  89.         {
  90.             case 1:    //    Send Quit
  91.                 BreakConnections();
  92.             break;
  93.             case 2:    //    Keep Quiet
  94.                 ;
  95.             break;
  96.             case 3:    //    Cancel
  97.             return false;
  98.         }
  99.     }
  100.     return true;
  101. }
  102.  
  103.  
  104.  
  105. Boolean
  106. ConfirmNetQuit (void)
  107. {
  108.     if (! Connected())
  109.         return true;
  110.  
  111.     CurrentCursor (arrowCursor);
  112.     switch (Alert (404, nil))
  113.     {
  114.         case 2:    //    Quit
  115.             BreakConnections();
  116.             return true;
  117.         break;
  118.     }
  119.     return false;
  120. }
  121.  
  122.  
  123.  
  124. void
  125. SetPlayerKind (SettingsPtr settings, short player, short type)
  126. {
  127.     settings->PlayerKind[player] = type;
  128. }
  129.  
  130.  
  131.  
  132. short
  133. GetPlayerKind (SettingsPtr settings, short player)
  134. {
  135.     return settings->PlayerKind[player];
  136. }
  137.  
  138.  
  139. Boolean
  140. IsNetPlayer (SettingsPtr settings, short player)
  141. {
  142.     return (GetPlayerKind (settings, player) == networkPlayer);
  143. }
  144.  
  145.  
  146. Boolean
  147. IsMacPlayer (SettingsPtr settings, short player)
  148. {
  149.     return (GetPlayerKind (settings, player) == macPlayer);
  150. }
  151.  
  152.  
  153. Boolean
  154. IsHumanPlayer (SettingsPtr settings, short player)
  155. {
  156.     return (GetPlayerKind (settings, player) == humanPlayer);
  157. }
  158.  
  159.  
  160.  
  161. short
  162. CountPlayerKind (SettingsPtr settings, short type)
  163. {
  164.     short    p, count = 0;
  165.     
  166.     for (p = 1; p <= settings->Players; p++)
  167.     {
  168.         if (GetPlayerKind (settings, p) == type)
  169.             count++;
  170.     }
  171.     return count;
  172. }
  173.  
  174.  
  175.  
  176. short
  177. CountNetPlayers (SettingsPtr settings)
  178. {
  179.     return CountPlayerKind(settings, networkPlayer);
  180. }
  181.  
  182.  
  183. short
  184.  
  185. CountMacPlayers (SettingsPtr settings)
  186. {
  187.     return CountPlayerKind(settings, macPlayer);
  188. }
  189.  
  190.  
  191.  
  192. short
  193. CountHumanPlayers (SettingsPtr settings)
  194. {
  195.     return CountPlayerKind(settings, humanPlayer);
  196. }